package com.cd.university.service;

import com.cd.university.common.RestResult;
import com.cd.university.controller.form.UploadFileDto;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author 陈栋
 * @create 2021/10/15 20:30
 */
public interface ProjectFileService {

    /**
     * 上传项目的logo
     * @param projectId 项目id
     * @param logo 图片logo
     * @return 统一响应格式
     */
    public RestResult updateProjectLogo(Integer projectId, MultipartFile logo);

    /**
     * 下载项目的logo
     * @param response 响应
     * @param projectId 项目id
     * @return 统一响应格式
     */
    public RestResult downloadProjectLogo(HttpServletResponse response, Integer projectId);

    /**
     * 批量上传项目文件
     * @param files 多文件
     * @param projectId 项目id
     * @param atId 成果形式id，默认为成果类型
     * @param categoryId 具体的成果id，默认为1
     * @param status 项目文件状态，默认为未通过：1
     * @return 统一响应格式
     */
    public RestResult updateProjectFile(MultipartFile[] files,
                                        Integer projectId,
                                        Integer atId,
                                        Integer categoryId,
                                        Integer status);

    /**
     * 查询项目的文件
     * @param projectId 项目id
     * @param fileId 文件id
     * @return 统一响应格式
     */
    public RestResult searchProjectFile(Integer projectId,String fileId);

    /**
     * 大文件上传
     * @param identifier
     * @param projectId 项目id
     * @param atId 成果形式id，默认为成果类型
     * @param categoryId 具体的成果id，默认为1
     * @param status 项目文件状态，默认为未通过：1
     * @param fileName 文件名称
     * @return 统一响应格式
     */
    public RestResult updateBigFile(String identifier,
                                    Integer projectId,
                                    Integer atId,
                                    Integer categoryId,
                                    Integer status,
                                    String fileName);

    /**
     * 分片上传文件
     * @param request 请求
     * @param uploadFileDto 响应
     * @return 统一响应格式
     */
    public RestResult updateBigFile(HttpServletRequest request, UploadFileDto uploadFileDto);

}
